-- 客户端脚本层入口函数

-- 加载lua文件到env环境中的函数
function _import(path, env)
    -- 参数检查
    assert(type(path) == "string", "加载的文件路径必须是字符串")
    env = env or {}  -- 如果未提供 env，创建一个新表

    -- 1. 使用 loadfile 加载文件（但不立即执行）
    local chunk, err = loadfile(path, "t", env)
    if not chunk then
        error(string.format("无法加载lua文件: '%s': %s", path, err))
    end

    -- 2. 执行 chunk，使文件中的代码在 env 环境中运行
    local success, result = pcall(chunk)
    if not success then
        error(string.format("无法执行加载的文件: '%s': %s", path, result))
    end

    return result or env  -- 返回模块或环境
end

-- 加载打包文件
local path = "../src/test/pkg.lua"
_import(path, _G) -- 加载到全局环境

-- 1.获取fd
local fd = _GetFd()
if fd ~= false then
    print("lua成功获取到套接字: ", fd)
    -- 打包数据
    local t = {
        vfd = tostring(fd),
        name = "xiaoming",
        age = tostring(18)
    }
    local ret, str = Pack2CPP(t)
    if ret then
        -- local ret2 = _Test(str)
        -- print("lua成功完成打包数据")
        -- if not ret2 then
        --     error(string.format("lua调用C++层的发送函数执行失败"))
        -- else
        --     print("lua成功调用C++层函数发送数据")
        -- end
    else
        error(string.format("lua无法正常打包数据"))
    end
else
    print("lua无法获取到套接字")
end